Skip to content

Conversation

@ecnivtwelve
Copy link
Contributor

@ecnivtwelve ecnivtwelve commented Dec 31, 2025

Summary by CodeRabbit

  • Nouvelles fonctionnalités

    • Ajout massif de traductions (FR/BR/EN/ES) : séparateurs de cours (matin/midi/soir/nuit), variantes pluriel/singulier, placeholder emoji, nouveaux libellés pour accueil, widgets, boutons, menu, modaux, heures de cours, actualités, tâches, profil et termes de date (aujourd’hui/hier/demain).
    • Extension de la section Notes : moyennes (dont moyenne pondérée), onglets (matières/dernières/classement), tri, classement et info matière.
  • Corrections

    • Ajustements terminologiques (ex. « Fonctionnalités IA ») et ajout de textes de réinitialisation des matières.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 31, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review

Walkthrough

Ajout massif de clés de traduction dans locales/fr.json, locales/br.json, locales/en.json (et ajouts similaires signalés pour locales/es.json) — nouveaux libellés pour Home, Course_Separator, Grades, News, Settings, modales, tâches et labels temporels. Changements purement additifs dans les fichiers JSON, sans modification d’API ni de logique.

Changes

Cohort / File(s) Résumé des modifications
Clés de traduction — Français
locales/fr.json
Ajout de nombreuses clés FR : séparateurs de cours (Lunch/Morning/Evening/Night) et variantes ; Home (greeting avec {{emoji}}, pluriels/singulier, Home_Widget_NoCourses, boutons/menus) ; modales (Modal_Course_Time/Start/End) ; Grades (recherche, onglets, tri, moyennes, pondération, SubjectInfo, BestGrade) ; News (placeholder, empty, no-results) ; Settings_Subjects_Reset ; modales tâche/profil/wallpaper ; labels Today/Yesterday/Tomorrow. Additif uniquement.
Clés de traduction — Portugais brésilien
locales/br.json
Ajout équivalent de nombreuses clés BR : Course_Separator_* , Home_Welcome_Name → inclut {{emoji}} , Home widgets/boutons (variantes none/singular/number) ; Modal_Course_* ; Grades (tabs/tri/pondération/SubjectInfo/BestGrade) ; News placeholders/no-results ; Settings_Subjects_Reset ; Today/Yesterday/Tomorrow. Duplications listées et présence d’un trailing comma détecté. Additif uniquement.
Clés de traduction — Anglais
locales/en.json
Ajout et reformulation de clés EN : nouveaux séparateurs iCal (Lunch/Morning/Evening/Night) et alternatives ; Home (greeting avec {{emoji}}, boutons/descr./pluriels) ; Modal_Course_Time/Start/End ; labels tâches ; refonte des libellés Grades (pondération, onglets, tri, SubjectInfo, BestGrade) ; News placeholders ; Today/Yesterday/Tomorrow. Additif uniquement.
Clés de traduction — Espagnol (référencé)
locales/es.json
Ajouts similaires rapportés : Course_Separator_, Home widgets/boutons, Modal_Course_, Grades (moyennes/pondération/SubjectInfo/BestGrade), News, Settings_Subjects_Reset, Today/Yesterday/Tomorrow. Additif uniquement.

Sequence Diagram(s)

(aucun diagramme généré — modifications i18n purement additives sans nouveau flux entre composants)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • feat(i18n): new Crowdin updates #610 : Ajouts et modifications i18n très similaires (Course_Separator_, Home_Welcome_Name avec {{emoji}}, Modal_Course_, Grades/News/Home keys).
  • New Crowdin updates #635 : Chevauchement direct des mêmes clés de localisation et mises à jour (Home, Course_Separator, Grades, Today/Yesterday/Tomorrow).
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Le titre décrit clairement la nature principale du changement : une mise à jour des fichiers de localisation via Crowdin.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai bot added the area: i18n Internationalisation et localisation. label Dec 31, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 03dab70 and 8bd0d9b.

📒 Files selected for processing (1)
  • locales/fr.json
🔇 Additional comments (5)
locales/fr.json (5)

141-160: LGTM !

Les traductions sont cohérentes et suivent un bon pattern (None/Singular/Number). L'utilisation des placeholders {{number}} est correcte.


177-179: LGTM !

Traductions correctes et concises pour les horaires de cours.


220-229: LGTM !

Structure cohérente avec le pattern Label/Description. Les traductions sont précises et claires.


328-328: LGTM !

"Fonctionnalités IA" est la forme correcte de l'abréviation en français (sans points).


440-442: LGTM !

Les labels temporels sont corrects et standards.

Comment on lines +128 to +129
"Home_Cards_Button_Description_Plurial": "disponibles",
"Home_Chats_Plurial": "discussions",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for references to these specific keys in the codebase
rg "Plurial" --type ts --type tsx --type js --type jsx -n

Repository: PapillonApp/Papillon

Length of output: 91


🏁 Script executed:

# Also search for the correct "Plural" spelling to see if other keys use it
rg "Plural" --type ts --type tsx --type js --type jsx -n | head -20

Repository: PapillonApp/Papillon

Length of output: 91


🏁 Script executed:

# Check the entire locales/fr.json file to see all key patterns
cat -n locales/fr.json | grep -i plural

Repository: PapillonApp/Papillon

Length of output: 246


🏁 Script executed:

# Search for references to "Plurial" without file type restriction
rg "Plurial" -n

Repository: PapillonApp/Papillon

Length of output: 201


🏁 Script executed:

# Search specifically for code that might reference these keys (search for the full key names)
rg "Home_Cards_Button_Description_Plurial|Home_Chats_Plurial" -n

Repository: PapillonApp/Papillon

Length of output: 201


🏁 Script executed:

# Get broader context around the lines 128-129 in fr.json
sed -n '125,135p' locales/fr.json | cat -n

Repository: PapillonApp/Papillon

Length of output: 704


🏁 Script executed:

# Search for code patterns that might reference these keys (Home_Cards or Home_Chats)
rg "Home_Cards|Home_Chats" -n

Repository: PapillonApp/Papillon

Length of output: 865


🏁 Script executed:

# Check for import statements that reference locale/translation files
rg "from.*locales|import.*locales|fr\.json" -n | head -20

Repository: PapillonApp/Papillon

Length of output: 425


🏁 Script executed:

# Look at the repository structure to understand how translations are used
find . -type f -name "*.ts" -o -name "*.js" | head -20

Repository: PapillonApp/Papillon

Length of output: 670


🏁 Script executed:

# Search for code that uses these translation keys (checking how they're accessed)
rg "Home_Cards_Button_Description|Home_Chats" --type ts --type js -B 2 -A 2 | head -50

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Look for the utils/i18n.ts file to understand how keys are accessed
cat -n utils/i18n.ts | head -30

Repository: PapillonApp/Papillon

Length of output: 1326


🏁 Script executed:

# Search for any file that might use these specific keys with Plurial spelling
rg "\[.*Plurial.*\]|\.Plurial" -n

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Search for how these keys are accessed in code (using useTranslation pattern common in React)
rg "useTranslation|i18next|i18n\.|t\(" --type ts --type js -A 3 | head -100

Repository: PapillonApp/Papillon

Length of output: 4518


🏁 Script executed:

# Look for actual usage of the specific Home_Cards_Button_Description key pattern
rg "Home_Cards_Button_Description" -n

Repository: PapillonApp/Papillon

Length of output: 380


🏁 Script executed:

# Check all keys in en.json to compare naming patterns
rg "Home_Cards_Button_Description|Home_Chats" locales/en.json | head -20

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Search en.json for Home_Cards and Home_Chats keys to see the pattern in English
cat -n locales/en.json | grep -i "Home_Cards\|Home_Chats" | head -20

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Check if the code directly references translation keys by searching for the t() function with these keys
rg "t\(.*Home_" -B 2 -A 2 | head -50

Repository: PapillonApp/Papillon

Length of output: 2205


🏁 Script executed:

# Look at all files that might consume these translation keys
find . -name "*.tsx" -o -name ".ts" | xargs grep -l "Home_Cards_Button_Description\|Home_Chats" 2>/dev/null | head -10

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Get the Home_Cards and Home_Chats section from en.json
sed -n '120,160p' locales/en.json | cat -n

Repository: PapillonApp/Papillon

Length of output: 2056


🏁 Script executed:

# Check if these "Plurial" keys are even defined in en.json
rg "Home_Cards_Button_Description|Home_Chats" locales/en.json -B 1 -A 1

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Search for any actual code usage of these translation keys (more thorough search)
rg "Home_Cards_Button_Description_Plurial|Home_Chats_Plurial" --type ts --type js

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Get lines around Home section in en.json to see the key naming pattern
sed -n '100,160p' locales/en.json | cat -n

Repository: PapillonApp/Papillon

Length of output: 3116


🏁 Script executed:

# Check if en.json has the corresponding keys and what they're called
rg "Chats.*Plural|Cards.*Plural" locales/en.json -B 1 -A 1

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# See the full Home section from fr.json to understand the context
sed -n '120,160p' locales/fr.json | cat -n

Repository: PapillonApp/Papillon

Length of output: 2106


🏁 Script executed:

# Search for dynamic key reference patterns that might use these keys
rg "Home_Cards|Home_Chats" --type ts --type js -C 3 | head -80

Repository: PapillonApp/Papillon

Length of output: 46


🏁 Script executed:

# Check if en.json is missing these keys entirely (compare structure)
diff <(rg "\"Home_" locales/en.json | sed 's/.*"\([^"]*\)".*/\1/' | sort) <(rg "\"Home_" locales/fr.json | sed 's/.*"\([^"]*\)".*/\1/' | sort) 2>&1 | head -30

Repository: PapillonApp/Papillon

Length of output: 151


🏁 Script executed:

# Final check: are these Plurial keys referenced via variable/computed property access?
rg "\[.*Home.*\]|\$\{.*Home" --type ts --type js

Repository: PapillonApp/Papillon

Length of output: 990


🏁 Script executed:

# Check en.json for any Plurial or similar Home_Cards/Home_Chats keys
sed -n '100,160p' locales/en.json | cat -n

Repository: PapillonApp/Papillon

Length of output: 3116


🏁 Script executed:

# Final verification: list all keys in fr.json that contain "Plural"
rg '"[^"]*Plural[^"]*"' locales/fr.json

Repository: PapillonApp/Papillon

Length of output: 225


🏁 Script executed:

# Check if these keys might be referenced via string concatenation or dynamic access
rg "Home_Cards_Button_Description|Home_Chats" app/ -C 5 --type ts --type js 2>/dev/null | head -100

Repository: PapillonApp/Papillon

Length of output: 46


Corriger l'orthographe dans les noms de clés : "Plurial" doit être "Plural"

Les clés Home_Cards_Button_Description_Plurial et Home_Chats_Plurial contiennent une faute de frappe. L'orthographe correcte en anglais est "Plural", comme confirmé par les autres clés du fichier (ex: Profile_Attendance_Denominator_Plural).

Suggestion de correction
-  "Home_Cards_Button_Description_Plurial": "disponibles",
-  "Home_Chats_Plurial": "discussions",
+  "Home_Cards_Button_Description_Plural": "disponibles",
+  "Home_Chats_Plural": "discussions",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Home_Cards_Button_Description_Plurial": "disponibles",
"Home_Chats_Plurial": "discussions",
"Home_Cards_Button_Description_Plural": "disponibles",
"Home_Chats_Plural": "discussions",

Comment on lines +216 to +217
"Grades_Avg_More": "En savoir plus",
"Grades_Avg_KnowMore": "En savoir plus",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for usage of both keys in TypeScript and JavaScript files
echo "=== Searching for Grades_Avg_More ==="
rg "Grades_Avg_More" --type ts --type js -n

echo -e "\n=== Searching for Grades_Avg_KnowMore ==="
rg "Grades_Avg_KnowMore" --type ts --type js -n

Repository: PapillonApp/Papillon

Length of output: 144


🏁 Script executed:

#!/bin/bash
# Broader search without file type restrictions
echo "=== Searching for Grades_Avg_More (broader search) ==="
rg "Grades_Avg_More" -n

echo -e "\n=== Searching for Grades_Avg_KnowMore (broader search) ==="
rg "Grades_Avg_KnowMore" -n

Repository: PapillonApp/Papillon

Length of output: 419


Supprimer la clé inutilisée Grades_Avg_More

Grades_Avg_More n'est référencée nulle part dans le code. Seule Grades_Avg_KnowMore est utilisée. Supprimez la clé orpheline à la ligne 216.

"Tasks_Sorting_Methods_DueDate": "Date de rendu",
"Tasks_Sorting_Methods_Subject": "Matières",
"Tasks_Sorting_Methods_Done": "Non terminé"
"Tasks_Sorting_Methods_Done": "Non terminé",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for usage of Tasks_Sorting_Methods_Done in the codebase
rg -n "Tasks_Sorting_Methods_Done" --type ts --type js -A 2 -B 2

Repository: PapillonApp/Papillon

Length of output: 389


🏁 Script executed:

# Also check the context around line 427 in fr.json for related sorting methods
sed -n '420,440p' locales/fr.json

Repository: PapillonApp/Papillon

Length of output: 764


🏁 Script executed:

# Check if there's a Tasks_Sorting_Methods_Undone or similar key
rg -n "Tasks_Sorting_Methods" locales/fr.json

Repository: PapillonApp/Papillon

Length of output: 223


Corriger la clé de tri des tâches "Done" qui affiche "Non terminé"

La clé Tasks_Sorting_Methods_Done à la ligne 427 est mal nommée. Le code utilise cette clé pour un tri qui place les tâches non terminées en premier (cf. app/(tabs)/tasks/index.tsx:368 avec la méthode Number(a.isDone) - Number(b.isDone)), ce qui correspond à la valeur "Non terminé".

Renommer la clé en Tasks_Sorting_Methods_Undone pour qu'elle soit cohérente avec sa fonction réelle, ou inverser la logique de tri pour afficher les tâches terminées en premier avec la valeur "Terminé".

ecnivtwelve and others added 5 commits December 31, 2025 18:15
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2fc0700 and dcea347.

📒 Files selected for processing (1)
  • locales/en.json
🔇 Additional comments (8)
locales/en.json (8)

72-72: Clé de traduction correcte.

La valeur "Missing title" correspond bien à l'intention de la clé pour indiquer un titre manquant.


87-98: Ajout de séparateurs de cours bien structurés.

Les nouvelles clés de traduction pour les séparateurs de cours sont bien organisées avec des variantes pour chaque période de la journée. Les traductions apportent une touche personnalisée à l'interface.


121-136: Structure cohérente pour les descriptions de boutons.

Les nouvelles clés suivent un modèle cohérent avec des variantes None/Singular/Number, ce qui permettra une gestion appropriée du pluriel dans l'interface utilisateur.


149-151: Clés de modalité de cours appropriées.

Les nouvelles clés pour afficher les horaires de cours sont claires et bien nommées.


173-196: Enrichissement complet de la section notes.

L'ajout de clés pour les calculs de moyennes, les statistiques et les classements améliore considérablement la fonctionnalité de la section des notes. Les descriptions sont claires et informatives.

Also applies to: 205-205, 215-217, 243-244


245-249: États vides et recherche bien définis pour les actualités.

Les nouvelles clés améliorent l'expérience utilisateur en fournissant des messages appropriés pour les recherches vides et sans résultat.


277-277: Corrections et ajouts de paramètres appropriés.

La correction de "A.I features" en "AI features" suit la convention standard pour l'abréviation. L'ajout des clés de réinitialisation des matières offre une fonctionnalité utile.

Also applies to: 331-333


363-373: Ajouts utiles pour les tâches et les labels temporels.

Les nouvelles clés pour les statuts de tâches, les titres de modales et les labels temporels (Today, Yesterday, Tomorrow) enrichissent l'interface utilisateur de manière cohérente.

Comment on lines +110 to +111
"Home_Cards_Button_Description_Plurial": "available",
"Home_Chats_Plurial": "chats",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Corriger la faute d'orthographe dans les clés de traduction.

Les clés contiennent "Plurial" au lieu de "Plural". Cette faute d'orthographe doit être corrigée pour maintenir la cohérence avec les conventions de nommage standards.

🐛 Correction proposée
-  "Home_Cards_Button_Description_Plurial": "available",
+  "Home_Cards_Button_Description_Plural": "available",
-  "Home_Chats_Plurial": "chats",
+  "Home_Chats_Plural": "chats",
-  "Home_Chats_Singular": "chat",
+  "Home_Chats_Singular": "chat",

Committable suggestion skipped: line range outside the PR's diff.

"Task_Complete": "Completed",
"Task_Sorting_Title": "Sort by",
"Task_OnlyShowUndone": "Finished",
"Task_OnlyShowUndone": "Finished tasks",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Incohérence entre la clé et la valeur de traduction.

La clé Task_OnlyShowUndone suggère qu'elle concerne les tâches non terminées, mais la valeur est "Finished tasks" (tâches terminées). Cette incohérence pourrait créer de la confusion dans l'interface utilisateur.

💡 Corrections proposées

Option 1 : Modifier la valeur pour correspondre à la clé :

-  "Task_OnlyShowUndone": "Finished tasks",
+  "Task_OnlyShowUndone": "Unfinished tasks",

Option 2 : Modifier la clé pour correspondre à la valeur :

-  "Task_OnlyShowUndone": "Finished tasks",
+  "Task_ShowFinished": "Finished tasks",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Task_OnlyShowUndone": "Finished tasks",
"Task_OnlyShowUndone": "Unfinished tasks",

"Tasks_Sorting_Methods_DueDate": "Due date",
"Tasks_Sorting_Methods_Subject": "Subjects",
"Tasks_Sorting_Methods_Done": "Undone"
"Tasks_Sorting_Methods_Done": "Undone",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Incohérence entre la clé et la valeur de traduction.

La clé Tasks_Sorting_Methods_Done contient "Done" mais la valeur est "Undone". Cette contradiction pourrait entraîner des erreurs de tri ou d'affichage dans l'interface.

💡 Correction proposée
-  "Tasks_Sorting_Methods_Done": "Undone",
+  "Tasks_Sorting_Methods_Undone": "Undone",

Ou si l'intention est d'afficher les tâches terminées :

-  "Tasks_Sorting_Methods_Done": "Undone",
+  "Tasks_Sorting_Methods_Done": "Done",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Tasks_Sorting_Methods_Done": "Undone",
"Tasks_Sorting_Methods_Undone": "Undone",
Suggested change
"Tasks_Sorting_Methods_Done": "Undone",
"Tasks_Sorting_Methods_Done": "Done",

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: i18n Internationalisation et localisation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants